-- 创建用户-招生老师-课程关系表
CREATE TABLE user_distributor_course_rel (
    id BIGSERIAL PRIMARY KEY,
    student_id BIGINT NOT NULL, -- 学生ID（购买课程的用户）
    distributor_id BIGINT NOT NULL, -- 招生老师ID（分销员）
    course_id BIGINT NOT NULL, -- 课程ID
    order_id BIGINT, -- 订单ID（关联支付订单）
    distribution_ratio DECIMAL(5,2) NOT NULL, -- 分销比例(%)
    status SMALLINT DEFAULT 1, -- 状态(0-无效,1-有效)
    created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间
    updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 更新时间
);

-- 创建索引
CREATE INDEX idx_user_distributor_course_rel_student_id ON user_distributor_course_rel (student_id);
CREATE INDEX idx_user_distributor_course_rel_distributor_id ON user_distributor_course_rel (distributor_id);
CREATE INDEX idx_user_distributor_course_rel_course_id ON user_distributor_course_rel (course_id);
CREATE INDEX idx_user_distributor_course_rel_order_id ON user_distributor_course_rel (order_id);
CREATE INDEX idx_user_distributor_course_rel_status ON user_distributor_course_rel (status);

-- 创建唯一索引，防止重复关系
CREATE UNIQUE INDEX uk_user_distributor_course_rel_student_course ON user_distributor_course_rel (student_id, course_id);

-- 创建更新时间触发器函数
CREATE OR REPLACE FUNCTION update_updated_time_column()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_time = CURRENT_TIMESTAMP;
    RETURN NEW;
END;
$$ language 'plpgsql';

-- 为user_distributor_course_rel表创建更新时间触发器
CREATE TRIGGER update_user_distributor_course_rel_updated_time 
    BEFORE UPDATE ON user_distributor_course_rel 
    FOR EACH ROW EXECUTE FUNCTION update_updated_time_column();

-- 创建分销记录表
CREATE TABLE distribute_records (
    id BIGSERIAL PRIMARY KEY,
    student_id BIGINT NOT NULL, -- 学生ID（购买课程的用户）
    distributor_id BIGINT NOT NULL, -- 招生老师ID（分销员）
    course_id BIGINT NOT NULL, -- 课程ID
    order_id BIGINT, -- 订单ID（关联支付订单）
    actual_pay_amount DECIMAL(10,2) NOT NULL, -- 用户实际支付金额
    distribution_ratio DECIMAL(5,2) NOT NULL, -- 分销比例(%)
    distribute_amount DECIMAL(10,2) NOT NULL, -- 分销金额
    status SMALLINT DEFAULT 0, -- 分销状态(0-待结算,1-已结算,2-已取消)
    settle_time TIMESTAMP, -- 结算时间
    remark VARCHAR(500), -- 备注
    created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间
    updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 更新时间
);

-- 创建索引
CREATE INDEX idx_distribute_records_student_id ON distribute_records (student_id);
CREATE INDEX idx_distribute_records_distributor_id ON distribute_records (distributor_id);
CREATE INDEX idx_distribute_records_course_id ON distribute_records (course_id);
CREATE INDEX idx_distribute_records_order_id ON distribute_records (order_id);
CREATE INDEX idx_distribute_records_status ON distribute_records (status);
CREATE INDEX idx_distribute_records_settle_time ON distribute_records (settle_time);
CREATE INDEX idx_distribute_records_created_time ON distribute_records (created_time);

-- 为distribute_records表创建更新时间触发器
CREATE TRIGGER update_distribute_records_updated_time 
    BEFORE UPDATE ON distribute_records 
    FOR EACH ROW EXECUTE FUNCTION update_updated_time_column();

-- 插入一些示例数据（可选）
-- INSERT INTO user_distributor_course_rel (student_id, distributor_id, course_id, distribution_ratio, status) 
-- VALUES (1, 2, 1, 10.00, 1);

-- INSERT INTO distribute_records (student_id, distributor_id, course_id, actual_pay_amount, distribution_ratio, distribute_amount, status) 
-- VALUES (1, 2, 1, 100.00, 10.00, 10.00, 0);

-- 添加表注释
COMMENT ON TABLE user_distributor_course_rel IS '用户-招生老师-课程关系表';
COMMENT ON COLUMN user_distributor_course_rel.student_id IS '学生ID（购买课程的用户）';
COMMENT ON COLUMN user_distributor_course_rel.distributor_id IS '招生老师ID（分销员）';
COMMENT ON COLUMN user_distributor_course_rel.course_id IS '课程ID';
COMMENT ON COLUMN user_distributor_course_rel.order_id IS '订单ID（关联支付订单）';
COMMENT ON COLUMN user_distributor_course_rel.distribution_ratio IS '分销比例(%)';
COMMENT ON COLUMN user_distributor_course_rel.status IS '状态(0-无效,1-有效)';
COMMENT ON COLUMN user_distributor_course_rel.created_time IS '创建时间';
COMMENT ON COLUMN user_distributor_course_rel.updated_time IS '更新时间';

COMMENT ON TABLE distribute_records IS '分销记录表';
COMMENT ON COLUMN distribute_records.student_id IS '学生ID（购买课程的用户）';
COMMENT ON COLUMN distribute_records.distributor_id IS '招生老师ID（分销员）';
COMMENT ON COLUMN distribute_records.course_id IS '课程ID';
COMMENT ON COLUMN distribute_records.order_id IS '订单ID（关联支付订单）';
COMMENT ON COLUMN distribute_records.actual_pay_amount IS '用户实际支付金额';
COMMENT ON COLUMN distribute_records.distribution_ratio IS '分销比例(%)';
COMMENT ON COLUMN distribute_records.distribute_amount IS '分销金额';
COMMENT ON COLUMN distribute_records.status IS '分销状态(0-待结算,1-已结算,2-已取消)';
COMMENT ON COLUMN distribute_records.settle_time IS '结算时间';
COMMENT ON COLUMN distribute_records.remark IS '备注';
COMMENT ON COLUMN distribute_records.created_time IS '创建时间';
COMMENT ON COLUMN distribute_records.updated_time IS '更新时间';
